/******************************************************************************* 
  Copyright (C), 1988-2020, zeno Tech. Co., Ltd.
  Description:     ZOOMFOCUS模块,统一管理资源
  Function List: 
       ZOOM_Open/FOCUS_Open
                |
                |
               \ /  
       ZOOM_Ctrl/FOCUS_Ctrl
                |
                |
               \ / 
      ZOOM_Close/FOCUS_Close 
            
  History:
    <wumj -- 2015-01-20>  创建   
    <wumj -- 2015-06-11>  修改  
*******************************************************************************/ 
#ifndef ZOOMFOCUS_H 
#define ZOOMFOCUS_H 

#ifdef __cplusplus
extern "C" {
#endif

/*=============================================================================
                                 Includes                                  
==============================================================================*/ 
#include <zoomfocusCommon.h>

/*=============================================================================
                               Macro Definition
==============================================================================*/
                        
/*=============================================================================
                        Local Structures and Typedef 
==============================================================================*/ 
 
/*=============================================================================
                             extern  Variables                                  
==============================================================================*/

/*=============================================================================
                             Function Definition                                  
==============================================================================*/  

/*******************************************************************************
  Function:     ZOOM_Open
  Description:  打开Zoom设备
  Input:        无
  Output:       无
  Return:       ~NULL: 操作成功
                NULL: 操作失败
  Others:       无
*******************************************************************************/
void *ZOOM_Open(void);

/*******************************************************************************
  Function:     ZOOM_Close
  Description:  关闭Zoom设备
  Input:        - hZoom: Zoom句柄
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOM_Close(void *hZoom);

/*******************************************************************************
  Function:     ZOOM_Ctrl
  Description:  变焦控制
  Input:        - hZoom: Zoom句柄 
                - pSetParam: 控制参数结构体指针               
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOM_Ctrl(void *hZoom, ZOOMFOCUS_setParam_t *pSetParam);

/*******************************************************************************
  Function:     ZOOM_GetPosition
  Description:  获取变焦镜头位置
  Input:        - hZoom: Zoom句柄 
                - pZoomPos: 位置指针               
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOM_GetPosition(void *hZoom, int *pZoomPos); 

/*******************************************************************************
  Function:     ZOOM_GetCaps
  Description:  获取变焦镜头能力
  Input:        - hZoom: Zoom句柄 
                - pZoomCaps: Zoom能力               
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOM_GetCaps(void *hZoom, ZOOMFOCUS_caps_t *pZoomCaps);

/*******************************************************************************
  Function:     ZOOM_Reset
  Description:  ZOOM镜头复位
  Input:        - hZoom: Zoom句柄               
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOM_Reset(void *hZoom);

/*******************************************************************************
  Function:     FOCUS_Open
  Description:  打开Focus设备
  Input:        无
  Output:       无
  Return:       ~NULL: 操作成功
                NULL: 操作失败
  Others:       无
*******************************************************************************/
void *FOCUS_Open(void);

/*******************************************************************************
  Function:     FOCUS_Close
  Description:  关闭Focus设备
  Input:        - hFocus: Focus句柄
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int FOCUS_Close(void *hFocus); 

/*******************************************************************************
  Function:     FOCUS_Ctrl
  Description:  对焦控制
  Input:        - hFocus: Focus句柄 
                - pSetParam: 控制参数结构体指针               
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int FOCUS_Ctrl(void *hFocus, ZOOMFOCUS_setParam_t *pSetParam);

/*******************************************************************************
  Function:     FOCUS_GetPosition
  Description:  获取聚焦镜头位置
  Input:        - hFocus: Focus句柄 
                - pFocusPos: 位置指针，对应范围0~10000      
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int FOCUS_GetPosition(void *hFocus, int *pFocusPos); 

/*******************************************************************************
  Function:     FOCUS_GetCaps
  Description:  获取聚焦镜头能力
  Input:        - hFocus: Focus句柄 
                - pFocusCaps: Focus能力     
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int FOCUS_GetCaps(void *hFocus, ZOOMFOCUS_caps_t *pFocusCaps);

/*******************************************************************************
  Function:     FOCUS_Reset
  Description:  Focus镜头复位
  Input:        - hFocus: Focus句柄    
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int FOCUS_Reset(void *hFocus);

/*******************************************************************************
  Function:     ZOOMFOCUS_SyncFocus
  Description:  开始同步对焦
  Input:        - hZoom: zoom句柄  
                - hFocus: focus句柄
                - pSyncFocus: 同步对焦参数 
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOMFOCUS_SyncStart(void *hZoom, void *hFocus, ZOOMFOCUS_syncFocus_t *pSyncFocus); 

/*******************************************************************************
  Function:     ZOOMFOCUS_Stop
  Description:  停止同步对焦
  Input:        - hZoom: zoom句柄   
                - hFocus: focus句柄
  Output:       无
  Return:       0: 操作成功
                ~0: 操作失败
  Others:       无
*******************************************************************************/
int ZOOMFOCUS_SyncStop(void *hZoom, void *hFocus); 
  

#ifdef __cplusplus
}
#endif
#endif // ZOOMFOCUS_H 
